package io.sdph.documents.model;

import io.sdph.products.model.Product;
import io.sdph.userprofile.model.User;


import java.awt.print.*;
import java.awt.*;

/**
 * Klasa odpowiedzialna za drukowanie faktury.
 * 
 * @author Michał Gołacki
 * @since 0.0.1
 */
public class Print implements Printable {

    private Invoice invoice;

    public Print(Invoice invoice) {
        this.invoice = invoice;
    }

    @Override
    public int print(Graphics g, PageFormat pageFormat, int pageIndex) throws PrinterException {
        if (pageIndex > 0) {
            return NO_SUCH_PAGE;
        }

        int poz_nab_x = 400;
        int poz_nab_y = 200;

        int lewy_marg_x = 75;
         //int poz_sprzed_y = 200;

        //Dane Nabywcy
        g.drawString("Nabywca:", poz_nab_x - 10, poz_nab_y - 5);
        g.drawString(invoice.getBuyer().getLastName(), poz_nab_x, poz_nab_y + 20);
        g.drawString(invoice.getBuyer().getFirstName(), poz_nab_x, poz_nab_y + 40);
        g.drawString(invoice.getBuyer().getAddress().toString(), poz_nab_x, poz_nab_y + 60);
        g.drawString(invoice.getBuyer().getNip(), poz_nab_x, poz_nab_y + 80);
        g.drawString(invoice.getBuyer().getRegon(), poz_nab_x, poz_nab_y + 100);
        //Dane Sprzedwacy
        
        //NR. FAKTURY
        g.drawString("Dokument nr : " + invoice.getNumber() + " / " + invoice.getCreationDate().getYear(), 50, 50);

        //Sposób i termin zapłaty
        g.drawString("Typ dokumentu : " + invoice.getType().getName(), 50, 70);
        g.drawString("Sposób zapłaty : " + invoice.getPaymentMethod().getName(), poz_nab_x, 350);
        g.drawString("Termin płatności : " + invoice.getDeadlineDate().toString().substring(0, 10), poz_nab_x, 370);
        
        //Daty faktury
        g.drawString("Data wystawienia : " + invoice.getCreationDate().toString().substring(0, 10), 400, 80);
        g.drawString("Data Data wykonania usługi :    " + invoice.getSellDate().toString().substring(0, 10), 400, 95);
        
        //Wypisanie towarów
        
        //PODPISY
        int podpis_x = 50;
        int podpis_y = 700;

        g.drawString(".............................................", podpis_x, podpis_y);
        g.drawString("Podpis osoby upoważnionej", podpis_x, podpis_y + 15);
        g.drawString("do wystawienia faktury", podpis_x + 15, podpis_y + 30);

        g.drawString(".............................................", 400, podpis_y);
        g.drawString("Podpis osoby upoważnionej", 400, podpis_y + 15);
        g.drawString("do otrzymania faktury", 400 + 15, podpis_y + 30);

        return PAGE_EXISTS;
    }
}
